package main

import (
	"fmt"
)

// 定义一个简单的结构体
type Person struct {
	Name string
	Age  int
}

// 值接收者方法，不会修改原始结构体
func (p Person) PrintInfo() {
	fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age)
}

// 指针接收者方法，可以修改原始结构体
func (p *Person) UpdateAge(newAge int) {
	p.Age = newAge
}

func main() {
	// 使用值接收者调用方法
	person1 := Person{Name: "Alice", Age: 30}
	person1.PrintInfo() // 输出: Name: Alice, Age: 30
	person1.UpdateAge(100)
	person1.PrintInfo()

	// 使用指针接收者调用方法
	person2 := &Person{Name: "Bob", Age: 25}
	person2.PrintInfo() // 输出: Name: Bob, Age: 25
	person2.UpdateAge(26)
	person2.PrintInfo() // 输出: Name: Bob, Age: 26
}
